package com.liy.cloud.common.utils;

/**
 * 交易编码枚举类
 * @author shitou
 * @Time：2018年8月10日 下午6:04:44
 * @version 1.0
 */
public enum TradeCode {
	
	NULL("null"),
	/**
	 * 售卡
	 */
	TRADE_01_00("0100"),
	
	/**
	 * 售出站票
	 */
	TRADE_03_00("0300"),

	/**
	 * 售行李票
	 */
	TRADE_05_00("0500"),
	
	/**
	 * 初始化
	 */
	TRADE_08_00("0800"),
	
	/**
	 * 预赋值（回收卡预赋值）
	 */
	TRADE_09_00("0900"),
	
	/**
	 * 预赋值（新卡预赋值）
	 */
	TRADE_09_01("0901"),
	
	/**
	 * 现金充值
	 */
	TRADE_11_00("1100"),
	
	/**
	 * 超程处理
	 */
	TRADE_15_00("1500"),
	
	/**
	 * 地铁消费起始
	 */
	TRADE_21_00("2100"),
	
	/**
	 * 地铁消费（普通结算）
	 */
	TRADE_22_00("2200"),
	
	/**
	 * 地铁消费（联程优惠）
	 */
	TRADE_22_01("2201"),
	
	/**
	 * 换票退票
	 */
	TRADE_62_00("6200"),
	
	/**
	 * 核准
	 */
	TRADE_63_00("6300"),
	
	/**
	 * 取消核准（付费区）
	 */
	TRADE_61_00("6100"),
	
	/**
	 * 取消核准（非付费区）
	 */
	TRADE_61_01("6101"),
	
	/**
	 * 取消核准（核准机）
	 */
	TRADE_61_02("6102"),
	
	/**
	 * 换票售票
	 */
	TRADE_65_00("6500"),
	
	/**
	 * 注销
	 */
	TRADE_66_00("6600"),
	
	/**
	 * 抵消
	 */
	TRADE_67_00("6700"),
	
	
	/**
	 * 好卡退卡
	 */
	TRADE_71_00("7100"),
	
	/**
	 * 非即时退款
	 */
	TRADE_72_00("7200"),
	
	/**
	 * 挂失
	 */
	TRADE_74_00("7400"),
	
	/**
	 * 退余额
	 */
	TRADE_75_00("7500"),
	
	/**
	 * 黑名单卡锁定
	 */
	TRADE_77_00("7700"),
	
	/**
	 * 卡锁定解除
	 */
	TRADE_78_00("7800"),
	
	/**
	 * 冲正
	 */
	TRADE_79_00("7900"),
	
	/**
	 * 滞留超时处理
	 */
	TRADE_83_00("8300"),
	
	/**
	 * 清交易起始标志
	 */
	TRADE_84_00("8400"),
	
	/**
	 * 地铁无入站处理
	 */
	TRADE_89_00("8900"),
	
	/**
	 * 有效期更改
	 */
	TRADE_90_00("9000"),
	
	/**
	 * 行政罚款
	 */
	TRADE_91_00("9100"),
	
	/**
	 * 行政支付
	 */
	TRADE_92_00("9200"),
	
	/**
	 * 激活
	 */
	TRADE_96_00("9600"),
	
	/**
	 * 售儿童票
	 */
	TRADE_97_00("9700");

	private final String code;

	TradeCode(String code) {
		this.code = code;
	}

	public String getCode() {
		return code;
	}

	@Override
	public String toString() {
		return this.code;
	}

	public static boolean contains(String code) {
		
		for (TradeCode codeEnum : TradeCode.values()) {
			if (codeEnum.code.equals(code)) {
				return true;
			}
		}
		return false;
	}
	
//	public static EnumMap<TradeCode, String> map = new EnumMap<>(TradeCode.class);
//	static {
//		for (TradeCode codeEnum : TradeCode.values()) {
//			map.put(codeEnum, codeEnum.code);
//		}
//	}
	public static TradeCode formartString(String code) {

		for (TradeCode codeEnum : TradeCode.values()) {
			if (codeEnum.code.equals(code)) {
				return codeEnum;
			}
		}
		return NULL;
	}
}
